package com.zy.design.pattern.factory.simple;

import com.zy.design.pattern.factory.base.IRuleConfigParser;
import com.zy.design.pattern.factory.base.JsonRuleConfigParser;
import com.zy.design.pattern.factory.base.YamlRuleConfigParser;

import java.util.HashMap;
import java.util.Map;

/**
 * @author zhaoyi
 * @date 2021/3/29 18:16
 */
public class ConfigParserFactoryV2 {

    private static final Map<String, IRuleConfigParser> map = new HashMap<>();

    //如果parser可以复用，为了节省内存和对象创建的时间,我们可以将parser事先创建好缓存起来
    static {
        map.put("json", new JsonRuleConfigParser());
        map.put("yaml", new YamlRuleConfigParser());
    }

    public static IRuleConfigParser createParser(String field) {
        IRuleConfigParser iRuleConfigParser = map.get(field.toLowerCase());
        if (iRuleConfigParser == null) {
            String msg = String.format("无对应解析器 %s", field);
            throw new IllegalArgumentException(msg);
        }
        return iRuleConfigParser;
    }


}
